package com.john.utils.common;

import javax.servlet.http.HttpServletRequest;
import javax.swing.filechooser.FileSystemView;
import java.io.InputStream;
import java.net.URL;

/**
 *
 * @description 得到当前应用的系统路径
 */
public class SystemPath {
	/**
	 * 获取项目实际跟路径
	 * /target/classes/
	 * @return
	 */
	public static String getSysClassesPath(){
		String path= ClassLoader.getSystemResource("").toString();
		String temp=path.replaceFirst("file:/", "").replaceFirst("WEB-INF/classes/", "");
		String resultPath=temp.replace("\\", "/");
		return resultPath;
	}

	/**
	 * 获取项目web访问路径http://localhost/xxxx
	 */
	public static  String getSysWebPaht(HttpServletRequest request){
		String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
		return basePath;
	}

	/**
	 * 获取项目src目录路径
	 */
	public static String getSysSrcPaht(){
		return new String(System.getProperty("user.dir") + "\\").replace("\\", "/");
	}

	/**
	 * 获取桌面路径
	 * @return
	 */
	public static String getDesktopDir(){
		return  FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath();
	}

	/**
	 * 根据当前类Class获取 target目录下的classes目录
	 * 在jar包项目一样能获取
	 * 如：在项目目录：resources -> img ->img.png
	 * @param obj 调用类的class
	 * @param resourcesPath /img/ing.png
	 * @return URL java.net
	 */
	public static URL getClassPath(Class obj,String resourcesPath){
		URL url = obj.getClass().getResource(resourcesPath);
		return url;
	}

	/**
	 * 获取resources下面文件的 InputStream
	 * @param obj
	 * @param resourcesPath
	 * @return
	 */
	public static InputStream getClassPathInputStream(Class obj,String resourcesPath){
		InputStream url = obj.getClass().getResourceAsStream(resourcesPath);
		return url;
	}

	/**
	 * 获取项目根目录
	 * @return
	 */
	public static String getPathRoot(){
		return SystemPath.getSysClassesPath().split("/")[0] + "/";
	}

	public static void main(String[] args){
		String rootDir = System.getProperty("user.dir");
		System.out.println(rootDir);
		System.out.println(SystemPath.getPathRoot());
	}
}
